#Boa:Frame:Frame1

import wx
import wx.richtext
import utiles
import consultasBD
import Vista
from decimal import Decimal

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1BUTTON2, wxID_FRAME1PANEL1, 
 wxID_FRAME1RICHTEXTCTRL1, 
] = [wx.NewId() for _init_ctrls in range(5)]

class Frame1(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(539, 246), size=wx.Size(295, 245),
              style=wx.DEFAULT_FRAME_STYLE, title='Igualar Tablas')
        self.SetClientSize(wx.Size(287, 218))

        self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
              pos=wx.Point(0, 0), size=wx.Size(287, 218),
              style=wx.TAB_TRAVERSAL)

        self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label='Aceptar',
              name='button1', parent=self.panel1, pos=wx.Point(24, 176),
              size=wx.Size(112, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnAceptar, id=wxID_FRAME1BUTTON1)

        self.button2 = wx.Button(id=wxID_FRAME1BUTTON2, label='Salir',
              name='button2', parent=self.panel1, pos=wx.Point(160, 176),
              size=wx.Size(112, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_FRAME1BUTTON2)

        self.richTextCtrl1 = wx.richtext.RichTextCtrl(id=wxID_FRAME1RICHTEXTCTRL1,
              parent=self.panel1, pos=wx.Point(24, 16), size=wx.Size(240, 144),
              style=wx.richtext.RE_MULTILINE, value='')
        self.richTextCtrl1.SetLabel('text')

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.button1.SetFocus()
        self.sucursal = int(utiles.getSucursalActiva()) - 1

    def OnSalir(self, event):
        self.Close()
        
    def existeRegistro(self,tabla,clave,valor):
        consultaSQL = "SELECT "+clave+" FROM "+tabla+" WHERE "+clave+"='"+valor+"'"
##        consultaSQL = "SELECT "
##        for clave in claves:
##            consultaSQL+=clave+","
##        consultaSQL = consultaSQL[:-1]+" FROM "+tabla+" WHERE "
##        for i,clave in enumerate(claves):
##            consultaSQL+=clave+"='"+datos[i]+"' AND"
##        consultaSQL = consultaSQL[:-4]
        resultado = consultasBD.ordenCruda(consultaSQL)
        if resultado != ():
            return True
        return False

    def texto(self,mensaje):
        mensaje+="\n"
        self.richTextCtrl1.AppendText(mensaje)
        self.richTextCtrl1.Refresh()

    def procesarDiferencias(self):
##        for i in xrange(10):
##            self.richTextCtrl1.AppendText(str(i)+"\n")
        self.button2.SetFocus()

    def procesarProductos(self):
        tabla1 = "productos"
        tabla2 = "productos2"
        consultaSQL = "SELECT * FROM "+tabla1+" WHERE 1"
        tablaDestino = consultasBD.ordenCruda(consultaSQL)
        consultaSQL = "SELECT * FROM "+tabla2+" WHERE 1"
        tablaOrigen = consultasBD.ordenCruda(consultaSQL)
        
        tabla = "productos"
        clave = "codsussan"

        consultaSQL = "SELECT "+clave+" FROM "+tabla+" WHERE 1"
        aux = consultasBD.ordenCruda(consultaSQL)
        listaClaves = []
        for item in aux:
            listaClaves.append(item[0])

        procesados = 0
        for item in tablaOrigen:
            codsussan = item[0]
            if codsussan in listaClaves:
                continue
            procesados+= 1
 
            codsussan = codsussan
            proveedor = str(item[1])
            descri = str(item[2])
            preciolt1 = str(item[3])
            preciolt2 = str(item[4])
            estacion = str(item[5])
            anio = str(item[6])
            grupo = str(item[7])
            preciocompra = str(item[8])

            r1 = "INSERT INTO "+tabla
            r2 = " (codsussan,proveedor,descri,preciolt1,preciolt2,estacion,anio,grupo,preciocompra) "
            r3 = "VALUES ('"+codsussan+"','"+proveedor+"','"+descri+"','"+preciolt1+"','"+preciolt2+"','"
            r4 = estacion+"','"+anio+"','"+grupo+"','"+preciocompra+"');\n"
            consultaSQL = r1 + r2 + r3 + r4
            f = open("igualar.sql","a")
            f.write(consultaSQL)
            f.close()
            
        print "Registros procesados en PRODUCTOS: ",str(procesados)
        self.texto("Registros procesados en PRODUCTOS: "+str(procesados))

    def procesarProveedor(self):
        tabla1 = "proveedor"
        tabla2 = "proveedor2"
        consultaSQL = "SELECT * FROM "+tabla1+" WHERE 1"
        tablaDestino = consultasBD.ordenCruda(consultaSQL)
        consultaSQL = "SELECT * FROM "+tabla2+" WHERE 1"
        tablaOrigen = consultasBD.ordenCruda(consultaSQL)
        
        tabla = "proveedor"
        clave = "idproveedor"

        consultaSQL = "SELECT "+clave+" FROM "+tabla+" WHERE 1"
        aux = consultasBD.ordenCruda(consultaSQL)
        listaClaves = []
        for item in aux:
            listaClaves.append(item[0])

        procesados = 0
        for item in tablaOrigen:
            idproveedor = item[0]
            if idproveedor in listaClaves:
                continue
            procesados+= 1
 
            idproveedor = idproveedor
            nombre = str(item[1])
            direccion = str(item[2])
            telefono = str(item[3])
            email = str(item[4])
            saldo = str(item[5])
            parametro = str(item[6])
            localidad = str(item[7])
            cp = str(item[8])
            cuit = str(item[9])
            fax = str(item[10])
            contacto = str(item[11])
            observacion = str(item[12])
            ocumulado = str(item[13])
            web = str(item[14])
            provincia = str(item[15])
            idregistro = str(item[16])

            r1 = "INSERT INTO "+tabla
            r2 = "(idproveedor,nombre,direccion,telefono,email,saldo,parametro,localidad,cp,cuit,"
            r3 = "fax,contacto,observacion,ocumulado,web,provincia,idregistro) "
            r4 = "VALUES ('"+idproveedor+"','"+nombre+"','"+direccion+"','"+telefono+"','"+email+"','"
            r5 = saldo+"','"+parametro+"','"+localidad+"','"+cp+"','"+cuit+"','"+fax+"','"+contacto+"','"+observacion
            r6 = "','"+ocumulado+"','"+web+"','"+provincia+"','"+idregistro+"');\n"
            consultaSQL = r1 + r2 + r3 + r4 + r5 + r6
            f = open("igualar.sql","a")
            f.write(consultaSQL)
            f.close()
            
        print "Registros procesados en PROVEEDOR: ",str(procesados)
        self.texto("Registros procesados en PROVEEDOR: "+str(procesados))


    def procesarPTC(self):
        sucursal = str(utiles.getSucursalActiva())

        tabla1 = "producto_talle_color"
        tabla2 = "producto_talle_color2"
        consultaSQL = "SELECT * FROM "+tabla1+" WHERE 1"
        tablaDestino = consultasBD.ordenCruda(consultaSQL)
        consultaSQL = "SELECT * FROM "+tabla2+" WHERE 1"
        tablaOrigen = consultasBD.ordenCruda(consultaSQL)
        
        tabla = "producto_talle_color"
        clave = "id"

        consultaSQL = "SELECT "+clave+" FROM "+tabla+" WHERE 1"
        aux = consultasBD.ordenCruda(consultaSQL)
        listaClaves = []
        for item in aux:
            listaClaves.append(item[0])

        procesados = 0
        procesadosSTK = 0
        for item in tablaOrigen:
            ptc = item[0]
            if ptc in listaClaves:
                continue
            procesados+= 1
 
            ptc = ptc
            codsussan = str(item[1])
            talle = str(item[2])
            color = str(item[3])
            
            r1 = "INSERT INTO "+tabla
            r2 = " (id,codsussan,talle,color) "
            r3 = "VALUES ('"+ptc+"','"+codsussan+"','"+talle+"','"+color+"');\n"
            consultaSQL = r1 + r2 + r3
            f = open("igualar.sql","a")
            f.write(consultaSQL)
            f.close()

            procesadosSTK+= 1
            r1 = "INSERT INTO stock (ptc,stock,sucursal) VALUES ('"
            r2 = ptc+"','0','"+sucursal+"');\n"
            consultaSQL = r1 + r2
            f = open("igualar.sql","a")
            f.write(consultaSQL)
            f.close()
            
        print "Registros procesados en PRODUCTO_TALLE_COLOR: ",str(procesados)
        self.texto("Registros procesados en PRODUCTO_TALLE_COLOR: "+str(procesados))
        print "Registros procesados en STOCK: ",str(procesadosSTK)
        self.texto("Registros procesados en STOCK: "+str(procesadosSTK))

    def procesarTransferencias(self):
        sucursal = str(utiles.getSucursalActiva())

        r1 = "SELECT ptc FROM transferenciastieneproductos as p1, "
        r2 = "                (SELECT id FROM transferencias WHERE fecha>='2011-12-01') as p2 "
        r3 = "WHERE p1.idtransferencia=p2.id"
        consultaSQL = r1 + r2 + r3
        aux = consultasBD.ordenCruda(consultaSQL)
        listaClaves = []
        for item in aux:
            listaClaves.append(item[0])

        consultaSQL = "SELECT ptc FROM stock WHERE sucursal='"+sucursal+"'"
        aux = consultasBD.ordenCruda(consultaSQL)
        listaStock = []
        for item in aux:
            listaStock.append(item[0])

        print "Elementos en Transferencias:",len(listaClaves)
        print "Elementos en Stock",len(listaStock)

        procesados = 0
        for item in listaClaves:
            if item in listaStock:
                continue

            procesados+= 1
            r1 = "INSERT INTO stock (ptc,stock,sucursal) VALUES ('"
            r2 = item+"','0','"+sucursal+"');\n"
            consultaSQL = r1 + r2
            f = open("igualar.sql","a")
            f.write(consultaSQL)
            f.close()
            
        print "Registros nuevos en STOCK: ",str(procesados)
        self.texto("Registros nuevos en STOCK: "+str(procesados))

    def OnAceptar(self, event):
##        self.procesarDiferencias()
        self.button1.Enable(False)
        self.button2.Enable(False)

        f = open("igualar.sql","w")
        f.close()

        print "=> Procesando PRODUCTOS"
        self.procesarProductos()
        print "=> Procesando PTC y STOCK"
        self.procesarPTC()
        print "=> Procesando PROVEEDOR"
        self.procesarProveedor()
        print "=> Procesando STOCK"
        self.procesarTransferencias()
        
        self.button1.Enable(True)
        self.button2.Enable(True)
        self.button2.SetFocus()
